#!/usr/bin/env python
# -*- coding:utf-8 -*-

# file:TCP-serv.py
# author: 马国鑫
# datetime:2022/4/17 10:19
# software: PyCharm

"""
this is function  description 
"""

import socket

# 1创建服务端端套接字对象
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 端口复用设置，让程序退出端口号立即释放
# 参数1 socket选项列表
# 参数2 地址复用
# 参数3 设置成True就是开启，默认不开启
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)

# 2绑定端口号
# 我的ip地址可以不写(服务器的ip地址)默认是本机
tcp_server_socket.bind(("192.168.176.1", 8080))
# 3设置监听
# 设置最大监听数
# tcp_server_socket从主动套接字变成了被动套接字
# 此时只能接受数据，不能发送数据
# 作用是为了接受链接请求
tcp_server_socket.listen(128)
# 4等待接受客户端的连接请求
# 返回值是一个元组，元素1 和客户端通讯的socket 元素2 客户端的地址信息(ip,port)
#  我们需要的是第一个socket对象
# client_socket负责处理客户端请求的
tcp_client_socket, client_addr = tcp_server_socket.accept()
# 可以循环和客户聊天
while True:
    # 5接收数据
    client_data = tcp_client_socket.recv(1024)
    # 对二进制数据解码
    client_data = client_data.decode('gbk')
    print(client_data)
    # 6发送数据
    tcp_client_socket.send("123".encode())
# 7关闭套接字
tcp_client_socket.close()
tcp_server_socket.close()
